<p>Для решения типичных задач веб-проекта обычно достаточно  модифицировать шаблоны стандартных компонентов и создать несколько шаблонов сайта. Однако иногда возникают задачи, требующие разработки собственных компонентов 2.0 и размещения их на страницах веб-решения.</p>

<p>При разработке собственных компонентов 2.0, как правило, придерживаются следующей последовательности действий:</p>
<ul>
<li>В веб-проекте, при составлении ТЗ и проектировании, выявляют и описывают возможные виды собственных компонентов 2.0.</li>
<li>Определяется пространство имен собственных компонентов 2.0, например,  с использованием названия проекта. Системные компоненты Bitrix Framework размещены в пространстве имен "bitrix:", компоненты проекта могут размещаться в пространстве имен, к примеру, "citybank:".</li>
<li>Определяется, какой стандартный компонент можно взять за основу для создания собственного компонента. В коде стандартных компонентов много примеров типичного и правильного использования API и техник программирования, поэтому рекомендуется брать их за основу.</li>
<li>К каждому компоненту 2.0 продумывается интерфейс - какие параметры компонента должны быть доступны администратору веб-сайта для редактирования. Например, для компонента, отображающего прогноз погоды, можно в настройки для администратора вынести свойство "Адрес веб-сервиса" и "Таймаут соединения с веб-сервисом" и т.п.</li>
<li>Определяется, в каком разделе дерева компонентов в визуальном редакторе необходимо разместить данный компонент.</li>
<li>Компонент кодируется. Особое внимание уделяется настройте автокеширования компонента и профилированию его работы - он не должен выполнять запросы к базе данных в режиме кеширования, выполняет минимальное количество запросов к базе данных при устаревании кеша, хранит в кеше только необходимые данные, использует минимально возможный объем оперативной памяти (не сортирует массивы размером с десятки-сотни мегабайт и т.п).</li>
 </ul>

<p>Созданные для веб-проекта собственные компоненты 2.0 могут использоваться как основа для новых компонентов, а также, по причине модульной структуры и "отчуждаемости от проекта" - эффективно использоваться в других веб-решениях. Постепенно формируется и развивается библиотека собственных компонентов 2.0. Иногда целесообразно компоненты проекта хранить в одном пространстве имен, а используемые в разных проекта компоненты 2.0 - в специальном пространстве имен типа "library:". </p>

<ol>
<li>В папке веб-сервера "/bitrix/components/" должны присутствовать папки с названием пространства имен компонентов проекта, например "myproject" и "mylibrary". Иногда разработчики создают собственные пространства имен типа "pupkin" или "test123", которые остаются в веб-проекте после его ввода в эксплуатацию.</li>
<li>В визуальном редакторе в дереве компонентов 2.0 собственные компоненты проекта размещены в отдельном подразделе дерева.</li>
<li>Собственные компоненты 2.0 проекта имеют соответствующие настройки, доступные в публичной части сайта. Важно, чтобы все настройки были тщательно протестированы и описаны. Не должно быть лишних, технических, непонятных администратору настроек, типа "Глубина вложенности хэш-массива объектов реестра" в компоненте-информере текущей погоды.</li>
 </ol>

